package ar.edu.utn.frgp.mvc.servlets;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import ar.edu.utn.frgp.beans.ListMovimientosBean;
import ar.edu.utn.frgp.beans.MessageBean;
import ar.edu.utn.frgp.beans.MovimientoBean;
import ar.edu.utn.frgp.banco.business.Implements.ImpListadosBussines;
import ar.edu.utn.frgp.banco.domain.ListMovimientos;
import ar.edu.utn.frgp.banco.domain.Movimiento;

/**
 * Servlet implementation class LoadDep_ExtServlet
 */
public class LoadDep_ExtServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public LoadDep_ExtServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		String FecIn = req.getParameter("FecIn");
		String FecFn = req.getParameter("FecFn");
		/**
		 * ban = 0 -> no ingreso todos los datos pedidos ban = 1 -> pasa las
		 * pruebas y en la pagina se muestran los datos para las fechas ban = 2
		 * -> error al parsear las fechas dadas.. son erroreas ban = 3 -> la
		 * fecha inicial dada es mayo a la que deberia ser mayor
		 */
		MessageBean ban = new MessageBean();

		if (FecFn != null && FecFn != null) {
			try {

				// Si ingreso algo en ambos campos de Fechas
				SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
				Date Din = new Date();
				Date Dfn = new Date();

				// exige el analisis de la fecha ingresada
				sdf.setLenient(false);

				Din = sdf.parse(FecIn);
				Dfn = sdf.parse(FecFn);

				// si Dfn es una fecha posterior a Din
				if (Din.before(Dfn) || Din.equals(Dfn)) {

					FecIn = sdf.format(Din);
					FecFn = sdf.format(Dfn);

					// AQUI ENVIOMLAS FECHAS VALIDADAS AL QUERY SQL

					ban.setMensaje("1");
					req.setAttribute("ban", ban);
				} else {
					ban.setMensaje("3");
					req.setAttribute("ban", ban);
				}

				// carga de datos
				ImpListadosBussines listadosbusiness = new ImpListadosBussines();
				List<ListMovimientos> ListMovimientos;
				ListMovimientosBean bean = new ListMovimientosBean();
				Integer id_cliente = (Integer) req.getSession().getAttribute("ID_Cliente");

				ListMovimientos = listadosbusiness.ListaDepExt(id_cliente, FecIn, FecFn);
				bean.setListMovimientos(ListMovimientos);

				req.setAttribute("bean", bean);
			} catch (ParseException e) {
				ban.setMensaje("2");
				req.setAttribute("ban", ban);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		} else {
			ban.setMensaje("0");
			req.setAttribute("ban", ban);
		}

		req.getRequestDispatcher("Dep_Ext.jsp").forward(req, resp);
	}

	/**
	 * @return Retorna la lista de movimientos con los datos que re requieren en la pagina Consultas-Movimiento
	 * 			<b>Tipo - Fecha - Monto - Origen - Saldo Actual</b>
	 */
	/**private List<Movimiento> CargaMov() {

		List<Movimiento> lista = new ArrayList<Movimiento>();
		Movimiento movimientos = new Movimiento();
		
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		
            
		try {
			for (int i = 0; i < 20; i++) {

				movimientos.setTipoMov("EXT");
				movimientos.setFecha(sdf.parse("12/03/12 12:02:40"));
				movimientos.setMonto(Double.valueOf(110000));
				movimientos.setOrigen("CUENTA");
				movimientos.setSaldoActual(Double.valueOf(1000));

				lista.add(movimientos);
			}
		} catch (ParseException e) {
			// TODO: handle exception
		}

		return lista;

	}*/
}
